package br.com.consigsys.model.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


/**
 * The persistent class for the tcons_beneficio database table.
 * 
 */
@Entity
@Table(name="tcons_beneficio")
public class TconsBeneficio extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="ID_BENEFICIO", unique=true, nullable=false)
	private Integer idBeneficio;

	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="DATA_BENEFICIO", nullable=false)
	private Date dataBeneficio;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="DATA_ULT_ALTERACAO")
	private Date dataUltAlteracao;

	@Column(name="DESC_BENEFICIO", nullable=false, length=40)
	private String descBeneficio;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="ID_SOCIO")
	private TconsSocio socio;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="ID_TIPO_BENEFICIO")
	private TconsTipoBeneficio tipoBeneficio;

	@Column(name="USUARIO_ULT_ALTERACAO", nullable=false, length=150)
	private String usuarioUltAlteracao;

	@Column(name="VAL_BENEFICIO", nullable=false, precision=10, scale=2)
	private BigDecimal valBeneficio;

	@Column(nullable=false)
	private Integer versao;

    public TconsBeneficio() {
    	this.socio = new TconsSocio();
    	this.tipoBeneficio = new TconsTipoBeneficio();
    }
    
    @PrePersist
    protected void beforePersist(){
    	this.versao = 1;
    	this.dataUltAlteracao = new Date();
    	
    }

    @PreUpdate
    protected void beforeUpdate(){
    	this.dataUltAlteracao = new Date();
    	
    }

	public Integer getIdBeneficio() {
		return this.idBeneficio;
	}

	public void setIdBeneficio(Integer idBeneficio) {
		this.idBeneficio = idBeneficio;
	}

	public Date getDataBeneficio() {
		return this.dataBeneficio;
	}

	public void setDataBeneficio(Date dataBeneficio) {
		this.dataBeneficio = dataBeneficio;
	}

	public Date getDataUltAlteracao() {
		return this.dataUltAlteracao;
	}

	public void setDataUltAlteracao(Date dataUltAlteracao) {
		this.dataUltAlteracao = dataUltAlteracao;
	}

	public String getDescBeneficio() {
		return this.descBeneficio;
	}

	public void setDescBeneficio(String descBeneficio) {
		this.descBeneficio = descBeneficio;
	}

	public String getUsuarioUltAlteracao() {
		return this.usuarioUltAlteracao;
	}

	public void setUsuarioUltAlteracao(String usuarioUltAlteracao) {
		this.usuarioUltAlteracao = usuarioUltAlteracao;
	}

	public BigDecimal getValBeneficio() {
		return this.valBeneficio;
	}

	public void setValBeneficio(BigDecimal valBeneficio) {
		this.valBeneficio = valBeneficio;
	}

	public Integer getVersao() {
		return this.versao;
	}

	public void setVersao(Integer versao) {
		this.versao = versao;
	}

	@Override
	public Integer getId() {
		return this.getIdBeneficio();
	}

	@Override
	public void setId(Integer id) {
		this.setIdBeneficio(id);
		
	}

	/**
	 * @return the socio
	 */
	public TconsSocio getSocio() {
		return socio;
	}

	/**
	 * @param socio the socio to set
	 */
	public void setSocio(TconsSocio socio) {
		this.socio = socio;
	}

	/**
	 * @return the tipoBeneficio
	 */
	public TconsTipoBeneficio getTipoBeneficio() {
		return tipoBeneficio;
	}

	/**
	 * @param tipoBeneficio the tipoBeneficio to set
	 */
	public void setTipoBeneficio(TconsTipoBeneficio tipoBeneficio) {
		this.tipoBeneficio = tipoBeneficio;
	}

}